iT邦幫忙

2023 iThome 鐵人賽

DAY 23
0
Modern Web

前端三兩事,哪些您必須要知道的事 !系列 第 23

Day 23 - Nx + Monorepo 架構下的 Micro Frontend

  • 分享至 

  • xImage
  •  

摘要

  • 這篇文章的目的是 ?
  • Nx + Monorepo 架構下的 Micro Frontend
  • 連結

這篇文章的目的是 ?

在現代軟體開發世界中,前端應用程式的複雜性和要求不斷增加。隨著專案變得更大、更複雜,我們需要更有效的方法來開發、測試、部署和維護前端應用程式。這就是為什麼我們引入了一些強大的工具和套件,如React、Nx、Monorepo 和 Micro Frontend。

首先,React 是一個廣泛使用的JavaScript函數庫,用於構建用戶界面。它的組件化架構、性能優化和豐富的生態系統使其成為開發現代前端應用程式的理想選擇。

然後,Nx 是一個綜合性工具,可幫助您更輕鬆地管理大型前端專案,實現程式碼共用、依賴管理和持續集成/持續部署。它是現代前端開發的一個關鍵工具,能夠提高生產力並減少錯誤。

接下來,Monorepo 是一種組織程式碼的方法,將多個專案存儲在同一個版本控制庫中。這可以幫助我們更好地管理程式碼,提高共用程式碼的可用性,並確保一致性。

最後,Micro Frontend 是一種架構模式,允許我們將前端應用程式拆分為小型、獨立的部分,這些部分可以獨立開發、測試和部署。這使團隊可以更獨立地工作,同時保持應用程式的整體一致性。

在這篇文章中,我們將介紹如何結合這些工具和套件,特別是在以React為基礎的前端應用程式中,使用Nx和Monorepo建構Micro Frontend。這個結合將為您提供一個有力的工具組,以應對現代前端開發的挑戰,並使您能夠更輕鬆地建立、維護和擴展您的前端應用程式。現在,讓我們開始探討這些工具和套件的結合方式。

Nx + Monorepo 架構下的 Micro Frontend

  1. Monorepo 是什麼?

    Monorepo 是一種軟體開發結構,其中您將多個相關的專案或庫存儲在同一個版本控制庫中。這意味著您可以在單一儲存庫中管理多個專案,這些專案可以共享程式碼、資源和依賴關係。Monorepo 的優點包括更容易的程式碼共用、依賴管理以及測試和部署的一致性。

  2. Nx 是什麼?

    Nx 是一個強大的開發工具,用於建立和維護大型應用程式的 Monorepo 結構。它提供了一個快速、智能且可擴展的建構系統,專為開發者和團隊設計,以加速開發過程、提高程式碼品質並降低維護成本。Nx 提供了許多功能,包括程式碼生成、依賴分析、測試和集成、持續集成/持續部署(CI/CD)支援等等。

  3. Micro Frontend 是什麼?

    Micro Frontend 是一種軟體架構模式,類似於微服務(Microservices),但針對前端應用程式而設計。它的核心概念是將前端應用程式拆分成小型、獨立的部分,每個部分通常由不同的團隊開發和維護。這樣可以實現更好的可擴展性、獨立部署和團隊協作,同時保持前端應用程式的一致性。

  4. 如何在以 React 為基底,使用 Nx、Monorepo 建構一個 Micro Frontend?

    要在以 React 為基底,使用 Nx 和 Monorepo 建構一個 Micro Frontend,您可以按照以下步驟進行:

    • 設置 Nx Monorepo:創建一個 Nx Monorepo 專案,並使用 Nx CLI 工具建立 React 專案。這樣您可以在同一個儲存庫中管理多個 React 專案。
    • 定義 Micro Frontend:識別您的應用程式中哪些部分應該被視為 Micro Frontend,例如不同的頁面、功能模組或組件。
    • 建立獨立的 React 專案:為每個 Micro Frontend 創建獨立的 React 專案。Nx 提供了功能,使您能夠方便地建立這些專案。
    • 維護共享程式碼:使用 Nx 的功能,將共享的程式碼(如共用組件、工具函數等)提取到共享庫中,以便不同的 Micro Frontend 可以共用。
    • 建立路由和整合:設計您的應用程式的路由和整合機制,以使不同的 Micro Frontend 可以在同一個應用程式中協同工作。您可以使用 React Router 或其他路由解決方案來實現路由。
    • 測試和部署:使用 Nx 提供的測試和部署功能,確保每個 Micro Frontend 可以獨立測試和部署。您可以使用 CI/CD 工具來實現自動化部署。
    • 監控和維護:定期監控和維護您的 Micro Frontend,確保它們保持高可用性和性能。

這些步驟將幫助您建立一個以 React 為基礎的 Micro Frontend,並使用 Nx 和 Monorepo 來管理和維護它。這樣您可以更有效地開發和維護大型前端應用程式。

https://chat.openai.com/_next/image?url=https%3A%2F%2Flh3.googleusercontent.com%2Fa%2FACg8ocI6GSPvduu-ku8iA1Y3pPxHlemfpb-g5mWIdYiI8XzR%3Ds96-c&w=96&q=75

請附上程式碼範例。

ChatGPT

當建立一個以 React 為基礎的 Micro Frontend 專案時,程式碼範例將會相當複雜,包含多個檔案和目錄。以下是一個簡單的示例,顯示如何在 Nx Monorepo 中建立兩個 Micro Frontend 專案,每個專案都包含一個簡單的 React 組件。

假設您已經設定了 Nx Monorepo 環境,並使用 Nx CLI 創建了兩個 Micro Frontend 專案:micro-frontend1micro-frontend2

首先,假設您的 Monorepo 目錄結構如下:

cssCopy code
my-monorepo/
  apps/
    micro-frontend1/
      src/
        components/
          MicroFrontend1Component.js
      package.json
    micro-frontend2/
      src/
        components/
          MicroFrontend2Component.js
      package.json
  libs/
    shared-components/
      src/
        Button.js
      package.json
  nx.json
  package.json

在這個示例中,您有兩個 Micro Frontend 專案(micro-frontend1micro-frontend2),它們都包含一個簡單的 React 組件。同時,有一個共享庫 shared-components,包含一個共用的按鈕組件。

下面是示例程式碼片段:

  1. MicroFrontend1Component.js(位於 apps/micro-frontend1/src/components):
jsxCopy code
import React from 'react';
import Button from '@my-monorepo/shared-components/Button';

function MicroFrontend1Component() {
  return (
    <div>
      <h1>Micro Frontend 1</h1>
      <Button label="Click me in Micro Frontend 1" />
    </div>
  );
}

export default MicroFrontend1Component;

  1. MicroFrontend2Component.js(位於 apps/micro-frontend2/src/components):
jsxCopy code
import React from 'react';
import Button from '@my-monorepo/shared-components/Button';

function MicroFrontend2Component() {
  return (
    <div>
      <h1>Micro Frontend 2</h1>
      <Button label="Click me in Micro Frontend 2" />
    </div>
  );
}

export default MicroFrontend2Component;

  1. Button.js(位於 libs/shared-components/src):
jsxCopy code
import React from 'react';

function Button({ label }) {
  return <button>{label}</button>;
}

export default Button;

這是一個簡單的示例,展示了如何建立兩個 Micro Frontend 專案,並在其中使用共享的 React 組件。請注意,實際的 Micro Frontend 專案可能包含更多功能、路由、測試和部署設定,具體的程式碼會因專案需求而有所不同。此示例僅供參考,以幫助您入門 Nx Monorepo 中的 Micro Frontend 開發。

連結

  • Nx:https://nx.dev/getting-started/intro
  • Monorepo:https://www.cythilya.tw/2023/01/28/monolith-vs-multi-repo-vs-mono-repo/
  • Micro Frontend:https://micro-frontends.org/

上一篇
Day 22 - React & ES6
下一篇
Day 24 - React & TypeScript 分享
系列文
前端三兩事,哪些您必須要知道的事 !30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言